package br.com.bestOffer.produto.bean;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.bestOffer.ejb.discoRigido.entity.DiscoRigido;
import br.com.bestOffer.ejb.discoRigido.service.DiscoRigidoServiceBean;
import br.com.bestOffer.ejb.fonteAlimentacao.entity.FonteAlimentacao;
import br.com.bestOffer.ejb.fonteAlimentacao.service.FonteAlimentacaoServiceBean;
import br.com.bestOffer.ejb.memoriaRam.entity.MemoriaRam;
import br.com.bestOffer.ejb.memoriaRam.service.MemoriaRamServiceBean;
import br.com.bestOffer.ejb.placaDeVideo.entity.PlacaDeVideo;
import br.com.bestOffer.ejb.placaDeVideo.service.PlacaDeVideoServiceBean;
import br.com.bestOffer.ejb.placaMae.entity.PlacaMae;
import br.com.bestOffer.ejb.placaMae.service.PlacaMaeServiceBean;
import br.com.bestOffer.ejb.processador.entity.Processador;
import br.com.bestOffer.ejb.processador.service.ProcessadorServiceBean;
import br.com.bestOffer.ejb.produto.entity.Produto;
import br.com.bestOffer.ejb.usuario.entity.Usuario;
import br.com.bestOffer.enumerator.CategoriaProduto;
import br.com.bestOffer.exceptions.BestOfferDadoNaoEncontradoException;
import br.com.bestOffer.util.BaseManagedBean;
import br.com.bestOffer.util.BestOfferConstantes;
import br.com.bestOffer.util.Constantes;
import br.com.bestOffer.util.WebResources;

@ManagedBean
@ViewScoped
public class DetalharProdutoManagedBean extends BaseManagedBean{

	private static final long serialVersionUID = 1450984551567055606L;

	private Produto produto;

	private Usuario usuario;

	private PlacaDeVideo placaDeVideo;
	private PlacaMae placaMae;
	private Processador processador;
	private MemoriaRam memoriaRam;
	private DiscoRigido discoRigido;
	private FonteAlimentacao fonteAlimentacao;

	@EJB
	private PlacaMaeServiceBean placaMaeServiceBean;

	@EJB
	private ProcessadorServiceBean processadorServiceBean;

	@EJB
	private PlacaDeVideoServiceBean placaDeVideoServiceBean;

	@EJB
	private DiscoRigidoServiceBean discoRigidoServiceBean;

	@EJB
	private FonteAlimentacaoServiceBean fonteAlimentacaoServiceBean;

	@EJB
	private MemoriaRamServiceBean memoriaRamServiceBean;

	@PostConstruct
	public void init() throws BestOfferDadoNaoEncontradoException{
		produto =  (Produto) WebResources.getFlashContext().get(Constantes.PRODUTO);
		carregaProduto();
	}


	public String carregaProduto() throws BestOfferDadoNaoEncontradoException{
		if(produto.getCategoriaProduto() == CategoriaProduto.PlacaMae){
			placaMae = placaMaeServiceBean.buscarPlacaMaeComAnuncios(produto.getId());
			return BestOfferConstantes.ANUNCIOS_PLACA_MAE;
		}

		if(produto.getCategoriaProduto() == CategoriaProduto.Processador){
			processador = processadorServiceBean.buscarProcessadorComAnuncios(produto.getId());
			return BestOfferConstantes.ANUNCIOS_PROCESSADOR;
		}

		if(produto.getCategoriaProduto() == CategoriaProduto.MemoriaRam){
			memoriaRam = memoriaRamServiceBean.buscarMemoriaComAnuncios(produto.getId());
			return BestOfferConstantes.ANUNCIOS_MEMORIA_RAM;
		}

		if(produto.getCategoriaProduto() == CategoriaProduto.PlacaVideo){
			placaDeVideo = placaDeVideoServiceBean.buscarPlacaComAnuncios(produto.getId());
			return BestOfferConstantes.ANUNCIOS_PLACA_VIDEO;
		}
		
		if(produto.getCategoriaProduto() == CategoriaProduto.FonteAlimentacao){
			fonteAlimentacao = fonteAlimentacaoServiceBean.buscarFonteAlimentacaoComAnuncios(produto.getId());
			return BestOfferConstantes.ANUNCIOS_FONTE_ALIMENTACAO;
		}
		
		if(produto.getCategoriaProduto() == CategoriaProduto.DiscoRigido){
			discoRigido = discoRigidoServiceBean.buscarDiscoRigidoComAnuncios(produto.getId());
			return BestOfferConstantes.ANUNCIOS_FONTE_ALIMENTACAO;
		}
		return null;
	}


	public String voltar(){
		if(produto.getCategoriaProduto() == CategoriaProduto.PlacaMae){
			return BestOfferConstantes.PESQUISAR_PLACA_MAE;
		}

		if(produto.getCategoriaProduto() == CategoriaProduto.Processador){
			return BestOfferConstantes.PESQUISAR_PROCESSADOR;
		}

		if(produto.getCategoriaProduto() == CategoriaProduto.MemoriaRam){
			return BestOfferConstantes.PESQUISAR_MEMORIA_RAM;
		}

		if(produto.getCategoriaProduto() == CategoriaProduto.PlacaVideo){
			return BestOfferConstantes.PESQUISAR_PLACA_VIDEO;
		}
		
		if(produto.getCategoriaProduto() == CategoriaProduto.FonteAlimentacao){
			return BestOfferConstantes.PESQUISAR_FONTE_ALIMENTACAO;
		}
		
		if(produto.getCategoriaProduto() == CategoriaProduto.DiscoRigido){
			return BestOfferConstantes.PESQUISAR_DISCO_RIGIDO;
		}
		return null;
	}
	public PlacaDeVideo getPlacaDeVideo() {
		return placaDeVideo;
	}
	public void setPlacaDeVideo(PlacaDeVideo placaDeVideo) {
		this.placaDeVideo = placaDeVideo;
	}
	public PlacaMae getPlacaMae() {
		return placaMae;
	}
	public void setPlacaMae(PlacaMae placaMae) {
		this.placaMae = placaMae;
	}
	public Processador getProcessador() {
		return processador;
	}
	public void setProcessador(Processador processador) {
		this.processador = processador;
	}
	public MemoriaRam getMemoriaRam() {
		return memoriaRam;
	}
	public void setMemoriaRam(MemoriaRam memoriaRam) {
		this.memoriaRam = memoriaRam;
	}
	public DiscoRigido getDiscoRigido() {
		return discoRigido;
	}
	public void setDiscoRigido(DiscoRigido discoRigido) {
		this.discoRigido = discoRigido;
	}
	public FonteAlimentacao getFonteAlimentacao() {
		return fonteAlimentacao;
	}
	public void setFonteAlimentacao(FonteAlimentacao fonteAlimentacao) {
		this.fonteAlimentacao = fonteAlimentacao;
	}
	public Produto getProduto() {
		return produto;
	}
	public void setProduto(Produto produto) {
		this.produto = produto;
	}
	public Usuario getUsuario() {
		return usuario;
	}
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}


}
